Apache ANT একটি অত্যন্ত কাস্টমাইজেবল বিল্ড টুল, যা বিভিন্ন প্রকারের built-in টাস্ক (যেমন javac
, copy
, jar
) প্রদান করে, তবে কখনো কখনো প্রজেক্টের জন্য বিশেষ ধরনের কাজ সম্পাদন করতে কাস্টম টাস্কের প্রয়োজন হয়। ANT-এ custom task তৈরি করে আপনি আপনার প্রয়োজন অনুযায়ী কাজ করতে পারেন। এই কাস্টম টাস্ক Java ক্লাস হিসেবে তৈরি করা হয় এবং ANT ফাইলের মধ্যে অন্তর্ভুক্ত করা হয়।
এই গাইডে, আমরা দেখব কীভাবে custom task তৈরি এবং কম্পাইল করতে হয় এবং কীভাবে তা ANT ফাইলে অন্তর্ভুক্ত করা যায়।
Custom Task তৈরি করতে, প্রথমে আপনাকে একটি Java ক্লাস তৈরি করতে হবে, যা ANT টাস্কের কার্যক্রম সম্পাদন করবে। একটি ANT টাস্কে org.apache.tools.ant.Task
ক্লাস বা তার উপশ্রেণী (subclass) হতে হবে।
MyCustomTask.java
:
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class MyCustomTask extends Task {
// Override the execute method to define the task behavior
@Override
public void execute() throws BuildException {
System.out.println("Hello, this is a custom ANT task!");
}
}
Task
ক্লাসের subclass হিসেবে MyCustomTask
তৈরি করা হয়েছে।execute()
মেথডটি override করা হয়েছে, যা task চালানোর সময় ANT দ্বারা কল হবে।আপনি যখন Java ক্লাস তৈরি করবেন, তখন এটি কম্পাইল করতে হবে এবং ANT টাস্ক হিসেবে ব্যবহারযোগ্য করতে হবে।
প্রথমে Java ক্লাসটি কম্পাইল করুন:
javac -d . MyCustomTask.java
এখানে -d .
অপশন ব্যবহার করে কম্পাইল করা Java ক্লাসের আউটপুট বর্তমান ডিরেক্টরিতে রাখা হচ্ছে।
এরপর, এই কম্পাইল করা ক্লাসটি একটি JAR ফাইলে প্যাকেজ করুন (যেহেতু এটি ANT টাস্ক, এটি JAR ফাইল হিসেবে প্যাকেজ করা যেতে পারে)।
jar cvf customtask.jar -C . com
এই কমান্ডটি com
প্যাকেজ সহ MyCustomTask.class
ফাইলটি customtask.jar
ফাইলে প্যাকেজ করবে।
ANT ফাইলে Custom Task অন্তর্ভুক্ত করার জন্য আপনাকে taskdef ট্যাগ ব্যবহার করতে হবে। taskdef ট্যাগটি ANT-কে আপনার কাস্টম টাস্কের ক্লাস এবং JAR ফাইল সম্পর্কে তথ্য দেয়।
build.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomTaskExample" default="execute" basedir=".">
<!-- Define custom task -->
<taskdef name="mytask"
classname="com.example.ant.MyCustomTask"
classpath="path/to/customtask.jar"/>
<!-- Target to execute custom task -->
<target name="execute">
<mytask/>
</target>
</project>
taskdef
:com.example.ant.MyCustomTask
হল কাস্টম টাস্কের Java ক্লাসের পূর্ণ কোয়ালিফাইড নাম।<mytask/>
: এটি কাস্টম টাস্কটি চালানোর জন্য ব্যবহৃত হয়। <mytask/>
এই ট্যাগটি taskdef
-এ নির্ধারিত কাস্টম টাস্কের সমতুল্য।কাস্টম টাস্ক অন্তর্ভুক্ত করার পর, ant
কমান্ড ব্যবহার করে বিল্ড চালানো যেতে পারে।
ant execute
এটি execute
টার্গেট চালাবে, যা আপনার কাস্টম টাস্ক চালাবে এবং Hello, this is a custom ANT task!
মেসেজটি কমান্ড লাইনে প্রিন্ট করবে।
কাস্টম টাস্ক আরও উন্নত করতে আপনি বিভিন্ন atributes এবং nested elements যুক্ত করতে পারেন। উদাহরণস্বরূপ, আপনি কাস্টম টাস্কে ইনপুট প্যারামিটার পাস করতে পারেন।
MyCustomTask.java
(Parameterized):
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class MyCustomTask extends Task {
private String message;
// Setter for the message parameter
public void setMessage(String message) {
this.message = message;
}
@Override
public void execute() throws BuildException {
if (message == null) {
throw new BuildException("Message attribute is required!");
}
System.out.println(message);
}
}
এখানে setMessage()
মেথডটি যোগ করা হয়েছে যা ANT ফাইলে পাস করা ইনপুট মেসেজ গ্রহণ করবে।
build.xml
(Parameterized):<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomTaskExample" default="execute" basedir=".">
<!-- Define custom task with parameter -->
<taskdef name="mytask"
classname="com.example.ant.MyCustomTask"
classpath="path/to/customtask.jar"/>
<target name="execute">
<!-- Pass a message to custom task -->
<mytask message="Hello, Custom Task with Parameter!"/>
</target>
</project>
এখন আপনি message
অ্যাট্রিবিউট পাস করতে পারেন এবং কাস্টম টাস্ক সেই মানটি ব্যবহার করবে।
org.apache.tools.ant.Task
ক্লাসের subclass হবে এবং execute()
মেথডটি override করবে।taskdef
ট্যাগ ব্যবহার করুন এবং প্রয়োজনীয় ক্লাসপাথ সেট করুন।এইভাবে, আপনি ANT-এর বিল্ড প্রক্রিয়ায় কাস্টম টাস্ক তৈরি এবং অন্তর্ভুক্ত করে অতিরিক্ত কার্যকলাপ সম্পাদন করতে পারবেন, যা প্রজেক্টের নির্দিষ্ট প্রয়োজন অনুসারে কাস্টমাইজ করা যাবে।
common.read_more